/* 自调用函数----游戏对象 */
(function(){
    // 游戏的构造函数
    var that = null;
    function Game(map){
        this.food = new Food();
        this.snake = new Snake();
        this.map = map;
        that=this;
    };
    /* 初始化游戏----可以设置小蛇和食物显示出来 */
    Game.prototype.init=function(){
        /* 初始化游戏 */
        /* 食物初始化 */
        this.food.init(this.map);
        /* 小蛇初始化 */
        // this.snake.init(this.map);
        
        /* 调用 自动移动的小蛇的方法*/
        this.runSnake(this.food,this.map);

        /* 调用按键的方法 */
        this.bindKey();
    };
    /* 添加原型方法----设置小蛇可以自动跑起来 */
    Game.prototype.runSnake=function(food,map){
        /* 自动的去动 */
        var timer = null;
        clearInterval(timer);
        timer = setInterval(function(){
            /* this指的是window */
            this.snake.move(food,map);
            /* 初始化小蛇 */
            this.snake.init(map);

            // 横纵坐标最大值
            var maxX = map.offsetWidth/this.snake.width;
            var maxY = map.offsetHeight/this.snake.height;
            /* 小蛇头的坐标位置 */
            var headX = this.snake.body[0].x;
            var headY = this.snake.body[0].y;
            console.log(headX);
            /* 判断横坐标的 */
            if (headX<0||headX>=maxX) {
                // 撞墙了
                clearInterval(timer);
                alert("撞墙了^^^^");
            }
            /* 判断纵坐标的 */
            if (headY<0||headY>=maxY) {
                // 撞墙了
                clearInterval(timer);
                alert("撞墙了^^^^");
            }

        }.bind(that),150);//bind()方法改变this的指向 
    }
    /* 添加原型方法-----设置用户按键，改变小蛇移动方向 */
    Game.prototype.bindKey=function(){
        // 获取用户的按键，改变小蛇的方向
        document.addEventListener("keydown",function(e){
            // 这里边的this应该是触发keydown的事件的对象----document
            switch(e.keyCode){//获取案件的值
                case 37:that.snake.direction = "left";break;
                case 38:that.snake.direction = "top";break;
                case 39:that.snake.direction = "right";break;
                case 40:that.snake.direction = "bottom";break;
            };
        }.bind(that),false)
    }
    window.Game =Game;
}());

